<?php  
namespace Api\Controller;  
use Think\Controller;  
  
  
class UploadFileController extends Controller{  
      
    private $error_msg = ''; //上传错误信息  
    private $return    = array();//返回数据  
      
    public function index(){  
  
        $_GET= array_change_key_case ($_GET);//参数转换小写  
          
        $site = I('get.site/s','default');//站点  
        $savename = I('get.savename/s','auto');//上传文件保存规则  
        $subname = I('get.subname/s','');//上传子目录保存规则  
        $size   = I('get.size/d','','int');//上传文件大小限制  int  单位：M  
        $output = I('get.output/s','');//数据返回格式 默认数组，可选json  
        $is_secret = I('get.is_secret/d',0,'int');//是否上传至保密路径，1是， 0否， 默认0  
      
          
        //定义上传主路径  
        if(!in_array($site, C('site'))){//是否在允许上传的站点  
              
            $this->return = array('status'=>'error','content'=>'上传图片所属站点不允许或者设置错误');  
          
              
            if($output=='json'){  
                $this->ajaxReturn($this->return,'json');exit;  
            }else{  
                var_dump($this->return);exit;  
            }  
              
              
        }else{  
            //判断上传普通目录还是上传私密目录  
            if($is_secret == 1 ){//上传私密目录  
                  
                C('PICTURE_UPLOAD.rootPath',PRI_UPLOAD.$site."/");  
                  
            }else{//上传普通目录  
                  
                C('PICTURE_UPLOAD.rootPath',UPLOAD.$site."/");  
                  
            }  
          
            if(!is_dir(C('PICTURE_UPLOAD.rootPath'))){//自动创建子目录  
                      
                mkdir(C('PICTURE_UPLOAD.rootPath'),0777,true);  
                      
            }  
        }  
          
        //自定义保存子目录（默认日期）  
        if(!empty($subname)){  
            C('PICTURE_UPLOAD.subName',$subname);  
        }  
          
      
        //定义上传文件的保存名称（默认savename='auto'unique生成/savename='字符串'自定义名字/savename='origin',使用原来名称）  
          
        if($savename=='auto'){//使用unique生成  
            C('PICTURE_UPLOAD.saveName','uniqid');  
        }elseif($savename=='origin'){  
            C('PICTURE_UPLOAD.saveName','');  
        }else{  
            C('PICTURE_UPLOAD.saveName',$savename);  
        }  
          
        //定义上传文件的大小（默认maxSize=10M,自定义大小不超过10M）  
        if(!empty($size) && $size<=10){  
            C('PICTURE_UPLOAD.maxSize',$size*1024*1024);  
        }  
          
          
          
        /* 调用文件上传组件上传文件 */  
  
        $info = $this->upload_file(C('PICTURE_UPLOAD'));  
  
        /* 记录图片信息 */  
        if($info){  
              
            $this->return=array('status'=>'success','content'=>$info);  
              
        } else {  
              
              
            $this->return= array('status'=>'error','content'=>$this->error_msg);  
              
        }  
  
        if($output=='json'){  
            /* 返回JSON数据 */  
            $this->ajaxReturn($this->return,'json');  
        }else{  
            var_dump($this->return);exit;  
        }  
          
    }  
      
    /** 
     * 文件上传 
     * @param  array  $files   要上传的文件列表（通常是$_FILES数组） 
     * @param  array  $setting 文件上传配置 
     * @param  string $driver  上传驱动名称 
     * @param  array  $config  上传驱动配置 
     * @return array           文件上传成功后的信息 
     */  
    public function upload_file($config){  
        /* 上传文件 */  
        import('ORG.Net.UploadFile');  
        $upload = new \Think\Upload($config);// 实例化上传类  
          
        // 上传文件  
        $info = $upload->upload();  
          
        if(!$info) {// 上传错误提示错误信息  
            $this->error_msg = $upload->getError();  
            return false;  
        }else{// 上传成功 获取上传文件信息  
          
            return $info;  
  
        }  
  
          
    }  
      
  
      
  
}  
?>  